package com.resou.reader.api.service;


import com.resou.reader.api.entry.ActivityRechargePrice;
import com.resou.reader.api.entry.FriendHelp;
import com.resou.reader.api.entry.IsFirstOpen;
import com.resou.reader.api.entry.ParticipationCheck;
import com.resou.reader.api.entry.RechargeActivityRule;
import com.resou.reader.api.entry.Result;
import com.resou.reader.api.entry.ResultList;
import com.resou.reader.api.entry.WXPayBean;
import com.resou.reader.mine.paycenter.AliPay;

import io.reactivex.Observable;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Query;

public interface ActivityService {

    /**
     * 获取微信充值订单接口
     */
    @POST("activityPay/wxPayAndroid")
    @FormUrlEncoded
    Observable<Result<WXPayBean>> wxPayAndroidActivity(@Field("token") String token, @Field("price") String price, @Field("title") String title, @Field("clientVerion") String clientVerion);

    /**
     * 获取支付宝充值订单接口
     */
    @POST("activityPay/aliPayApp")
    @FormUrlEncoded
    Observable<AliPay> aliPayActivity(@Header("token") String token, @Field("price") String price);

    @POST("fifteenActivity/queryFriendList")
    Observable<ResultList<FriendHelp>> getFriendHelpList(@Query("token") String token);

    /**
     * 三天充值活动规则接口
     *
     * @param token 用户的唯一标识
     * @return
     */
    @POST("activity/activityRules")
    Observable<Result<RechargeActivityRule>> getRechargeActivityInfo(@Query("token") String token);

    /**
     * 激活十五天活动
     */
    @POST("fifteenActivity/startFifteenDays")
    Observable<Result<String>> startFifteenDays(@Query("token") String token);

    /**
     * 判断该用户是否已经开始3天充值活动
     *
     * @param token 用户的唯一标识
     * @return false 未开始活动   true 已开始活动
     */
    @POST("activity/checkVoucherActivity")
    Call<Result<Integer>> checkIsJoinRechargeActivity(@Query("token") String token);

    /**
     * 启动用户的3天充值活动接口
     *
     * @param token 用户的唯一标识
     * @return false 未开始活动  true 已开始活动
     */
    @POST("activity/voucherActivity")
    Observable<Result> startRechargeActivity(@Query("token") String token, @Query("activityId") int activityId);

    /**
     * 校验是否参加过十五日活动
     * 根据返回值确定每日是否弹窗
     *
     * @param token
     * @return isParticipation :: 1：是;0：否
     */
    @POST("fifteenActivity/participationCheck")
    Call<Result<ParticipationCheck>> checkIsInActivity(@Header("token") String token);

    /**
     * 判断是否是当天第一次打开app
     *
     * @param token
     * @param clientType
     * @return 1：是;0：否
     */
    @POST("fifteenActivity/isFirstOpen")
    Call<Result<IsFirstOpen>> checkIsFirstOpenAppInDay(@Header("token") String token, @Query("clientType") String clientType);

    /**
     * 保存当日首次打开App信息
     *
     * @param token
     */
    @POST("fifteenActivity/setFirstOpen")
    Call<Result<String>> setFirstOpen(@Header("token") String token, @Query("clientType") String clientType);

    /**
     * 判断用户是否参加过三天充值活动
     *
     * @param token
     * @return
     */
    @POST("activity/checkActivity")
    Observable<Result> checkUserIsPayInRechargeActivity(@Query("token") String token);

    /**
     * 获取三天充值活动价格配置信息
     *
     * @param activityId
     * @return
     */
    @POST("activity/popupMessage")
    Observable<ResultList<ActivityRechargePrice>> getRechargePrice(@Query("activityId") int activityId);

}
